
//
//  @ Project : Proyecto X
//  @ File Name : Militar.java
//  @ Date : 15/10/2013
//  @ Author : 
//
//



package Game;

import java.awt.Rectangle;

import javax.swing.ImageIcon;

import TDALista.InvalidPositionException;
import TDALista.PositionList;


/**
 * Clase Militar que extiende de Robot.
 */
public class Militar extends Robot {
	
	protected int balas;
	
	
	/**
	 * Constructor de la clase Militar al cual se le setea sus atributos
	 * @param balas 
	 */
	public Militar() {
		super(300,0,300);
		this.balas = 60;
		cargarImagenes();
		componente = new RepresentacionGrafica(cara,posX,posY);
		componente.setAbajo();
	}
	
	
	public void cargarImagenes(){
		cara = new ImageIcon[4];
		cara[0] = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/marriba.png"));
		cara[1] = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/mderecha.png"));
		cara[2] = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/mabajo.png"));
		cara[3] = new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/mizquierda.png"));


	}
	
	/**
	 * Logica de disparar, busca el objeto que tenga en frente
	 * si es destruible le resta durabilidad
	 * horizonte= 0 hacia arriba.
	 * horizonte= 1 derecha
	 * horizonte = 2 hacia abajo
	 * horizonte = 3 hacia izquiera
	 * @param lista de destruibles
	 */
	
	public void disparar(PositionList<Destruible> lista){
		
		
		if (balas>0)
		{
			int x=posX;
			int y = posY;
			Rectangle rec= new Rectangle(x,y, 30, 30);//bala

			boolean hayColision=false;

			while ((y<700)&&(y>=0)&&(x<900)&&(x>=0)&&(!hayColision)){
				
				
				switch (horizonte)
				{
				case 0: {
					y=y-50;
					break;

					}
				case 1: {
					x=x+50;
					break;
					}
				case 2:{
					y=y+50;
					break;

					}
				case 3: {
					x=x-50;	
					break;

					}
				}//fin case
				if ((y>=0)&&(x>=0)&&(y<700)&&(x<900)) {

					rec.setLocation(x, y);
					for (Destruible d:lista){
					if (!hayColision){

						hayColision=d.getBounds().intersects(rec.getBounds());
						if (hayColision) 	{
							if (!d.recibirDisparo())
								try {
									lista.remove(d.getPosition());
								} catch (InvalidPositionException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
						}
						
							
						
					  }else 	break;
					}
				
				  
				}
				
		}
			balas--;
	}
		
	}
	
	/**
	 * Obtiene las balas disponibles del robt
	 * @ return balas
	 */
	public int getBalas() {
		return balas;
	
	}
	
	/**
	 * Setea las balas para el robot
	 * @param n 
	 */
	public void setBalas(int n) {
		balas=n;
	}
}
